查看原文
其他

使用Unity开发沙盒游戏《The Serpent Rogue》

Unity Unity官方平台 2022-05-07

本文将由乌克兰的独立游戏工作室SengiGames介绍使用Unity开发沙盒游戏《The Serpent Rogue》的过程,包括:药剂制造系统,Unity中着色器的使用以及实现交互式世界等。


《The Serpent Rogue》

《The Serpent Rogue》的创意来自于工作室的创始人Alexander Ponomarev在GameJam活动“Ludum Dare”上的项目《Plague Venue》,但是二者的游戏玩法完全不同。



对于游戏,Alexander最欣赏的是沉浸式氛围和有趣机制的结合。对于《The Serpent Rogue》,他希望做出不寻常的内容,尝试不熟悉的工作流程。《The Serpent Rogue》项目的重点在于:提供给玩家实现独特获胜方式的自由。


《The Serpent Rogue》具有其它游戏中不常见的有趣机制,玩家可以在每次游戏时找到新的感觉。在游戏中,玩家可以成为真正的炼金术师,发明药剂并进行实验,从而获取自己想要的东西。


Unity中的游戏开发

《The Serpent Rogue》使用Unity进行开发。选择Unity的主要原因是我们有丰富的Unity使用经验,此外,Unity非常容易上手,易于学习和定制。


开发过程中,我们尽可能使用Unity的原生工具。我们会在需要时,通过自定义功能逐渐扩展这些工具,从而增加更多的便利性,简化关卡设计等交互式内容。


游戏世界

《The Serpent Rogue》的游戏世界庞大而丰富,玩家可以游览不同的区域,看到不同的生物群落。在世界的一角,玩家会身处雪山之中,而地图的另一边则布满了沼泽湿地。


由于我们是一个小型团队,无法制作出无缝连接的开放式世界,因此,我们决定让玩家可以游览特定的“手工制作”位置,而其它地图会根据生物群落自动生成。这样的世界导航系统曾经在《Fallout  2》中使用过。


我们关注游戏最重要的内容是:与NPC的交互,药剂制造,以及探索获胜的新方式。


药剂制造系统

《The Serpent Rogue》融合了沙盒游戏和Roguelike游戏类型。NPC的基本功能组成了他们的行为,喜好和优缺点,包括:简单的行走、睡眠、进食等能力,以及高级的职业技能。



大多数时候,玩家会通过使用药剂来和NPC进行交互。玩家可以制作出各种药剂,例如:回血药剂、让NPC去到特定位置或攻击某特定种族特定年龄群体的药剂。


药剂也可以影响某些目标对象的机制。例如:游戏中的母鸡可以下蛋。而特殊的药剂可以把鸡蛋换成金条或煤炭。这样,普普通通的母鸡变成了金矿或产煤机。玩家也可以对自己进行实验,喝下药剂变成老鼠或蛇,钻进正常情况下难以到达的位置,获取价值连城的宝藏。


药剂让玩家可以和动物产生自定义交互效果,例如:玩家可以驯服动物,派遣它们执行任务,命令它们收集资源和战斗等。这种机制让我们的游戏世界变得不是线性的,而且也让世界更加丰富,玩家会使用多种方式来实现同一个目标。


在设计制造系统时,我们希望让该系统易于理解,玩家不必记住配方。每个配料都有一个关键词,而配方则是一个词组。例如:制作伤害性药剂时,我们需要三个带有特定标签的配料,这些标签是:Remove,Vitality,10,意思为“减少10点生命值”。


角色制作

《The Serpent Rogue》世界对其中的住民产生了很大的影响,这些住民的外表具有黑暗中世纪时期的阴郁风格。在游戏中,概念艺术的创意主要来自那个时期的神秘恐怖传说。


角色的主要特点在概念艺术阶段确定,从视觉上突显角色的地位和作用非常重要。即使在这个阶段,了解角色为达到优化要求而会受到的限制就已经很重要。



在概念艺术和其它细节完成后,我们要制作低多边形基础模型。我们主要使用Blender。由于场景中可能有许多对象,因此每个模型必须经过优化,只带有必要数量的多边形,骨骼和纹理等。


为了节省资源和简化纹理,我们经常合并一些对称元素的UV贴图。



动画在Blender中通过手工制作,使用真实的人和动物的视频作为参考。我们会仔细观察周围的世界,学习物理学和解剖学知识,了解事物的特点,这样有助于我们提高游戏角色的真实感。


给环境加入交互元素

我们希望玩家可以通过多种方式和环境进行交互。然而这不是普遍意义上的交互性,我们只强调有助于实现游戏氛围和感觉的细节。


我们的目标是给玩家呈现一个拥有生命力的有机世界。和动物一样,这个世界有时是沉静的,有时会打盹或动怒,充满无法预料的危险。


这个世界有风中摇曳的草、火光跳动的蜡烛、逐渐扩散的迷雾、纷飞的落叶、日出日落等,所有这些精妙的细节展现了和谐而令人愉悦的气氛。



然后,一场风暴突然袭来。无人知晓它揭开了什么秘密。自然之力很容易便可打破世界的平衡。狂风大作,雷云聚集,闪电在不断击向大地。没有人能预料这场风暴的后果。幽黑密林的神秘生物和沼泽环境营造了戏剧性的紧张气氛。



在游戏中,和谐平静与混乱未知互相融合,所有不可分离的部分形成了整个世界。游戏的反差会让玩家不知不觉地融入环境之中,设身处地感受主角的状态,成为这个诡异而疯狂世界的一部分。


库存系统

库存也会影响游戏过程,例如:如果库存内有腐烂的番茄,角色身边会出现苍蝇。虽然Asset Store资源商店有很多优秀的库存功能插件,但我们独立制作出了自己的库存系统。


我们使用Screen  Depth节点作为我们着色器的基础,给玩家展示可以放置或丢弃物品的区域。



然后,我们会获取鼠标或游戏手柄在3D环境的坐标,以玩家为起点计算射线投射。如果没有任何东西阻碍射线投射,那么就可以放置物品,否则,我们会告诉玩家无法在该位置放置物品。


着色器

所有的着色器都使用Amplify Shader Editor制作。一方面,这些着色器用于实现视觉效果,另一方面,着色器帮助我们打造理想的氛围。它们不仅用于实现卡通渲染效果,而且也会作为优化工具,解决许多视觉方面的任务。


例如:我们的低多边形马车由6个独立网格组成:主体、车门和4个车轮。它只有1个材质、1个纹理和2个遮罩。着色器丰富了马车的效果,因此车篷会在空中飘动,而且车帘具有透明的效果。



游戏世界有美杜莎角色。为了节省资源,我们决定使用着色器制作美杜莎头部的动态蛇群,而不是使用骨骼。



我们必须为着色器特别留意UV展开和纹理准备过程。使用Vertex Offset顶点偏移可能会破坏缝合部分,因此我们必须为蛇群使用无缝的UV。为了优化效果,所有UV贴图会合并为一个UV贴图。



如果顶点通过着色器调整,着色器的轮廓不会正确跟随蛇的运动。我们的解决方法是:创建一个额外网格,把它用作轮廓。我们使用了Blender的Solidify Modifier功能,并翻转了法线。


由于角色的所有部分都使用相同的材质和UV集,因此轮廓必须使用没有纹理的UV,这样才能重复蛇的运动,这就是为什么顶点都使用红色来绘制。


最后,我们会在着色器中把蛇纹理的颜色替换为黑色,该角色其它部分的轮廓使用着色器和遮罩来制作。


未来计划

目前我们希望专注于实现游戏内的连锁反应,我们开发的Perk系统可以制作出有趣的NPC非线性行为模式。

由于我们在不久前才开始对游戏进行紧锣密鼓的开发,因此游戏仍需要加入游戏手柄支持和本地化等基本要素。我们为原声音乐录制了民谣。下一步,我们要展开Pre-Alpha内测,向玩家收集反馈。


小结

沙盒游戏《The Serpent Rogue》的创作经验就分享到这里,更多精彩Made with Unity尽在Unity Connect平台。


下载Unity Connect APP,请点击此处 观看部分Unity官方视频,请关注B站帐户:Unity官方


你可以访问Unity答疑专区留下你的问题,Unity社区和官方团队帮你解答:

Connect.unity.com/g/discussion


推荐阅读

Made with Unity |《帕斯卡契约》2019苹果秋季发布会大放异彩

使用Unity Accelerator加快团队协作开发

Unity支持IAB方案:App-ads.txt和Open Measurement (OM)

《Falcon Age》的创作经验

《Morkredd》:使用阴影构建游戏玩法

《BitUp》:像素风格游戏及地图编辑器的开发历程

使用Houdini为Unity创建程序化环境

《Afterlight》:在游戏设计中结合象征符号



喜欢本文,请点“在看”

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存